/**
 * @author Q
 * @create 2025-07-11-10:07
 */

/**
 * 7.测试分类
 *      1.为什么要测试分类
 *      2.按照测试目标分类
 *      3.按照执行方式分类
 *      4.按照测试方法
 *      5.按照测试阶段分类
 *      6.按照是否⼿⼯测试
 *      7.按照实施组织划分
 *      8.按照测试地域划分
 */
public class Test {
    public static void main(String[] args) {
        /**
         * 8.按照测试地域划分
         *      国际化测试:测试⼈员需要测试软件在不同语⾔和地区是否能正常⼯作
         *      本地测试:执行的都是本地测试
         */
    }
    public static void main7(String[] args) {
        /**
         * 7.按照实施组织划分
         *      1.α测试(Alpha Testing)
         *          内测/a测，公司人员测试(不能由开发/测试参与)
         *      2.β测试(Beta Testing)
         *          公测/b测，软件用户测试（正式用户的一部分）
         *      3.α测试与β测试的区别：
         *          1.测试的场所不同：
         *          2.测试执⾏时机不同：
         *          3.测试持续时间⻓短不同：
         *      4.第三⽅测试
         *          第三⽅软件测试是指由独⽴的第三⽅公司或组织进⾏的软件测试活动
         *
         */
    }
    public static void main6(String[] args) {
        /**
         * 6.按照是否⼿⼯测试
         *      1.手工测试：⼿⼯测试就是由⼈去⼀个⼀个的输⼊⽤例，然后观察结果
         *      2.自动化测试（是一个统称）：
         *      就是在预设条件下运⾏系统或应⽤程序，评估运⾏结果，预先条件应包括正常条件和异常条件。(根据设计人的脚本测试)
         *      3.优缺点
         *          ⾃动化测试优点
         *          • 节省成本
         *          • 提⾼测试⼈员执⾏⼯作效率
         *          • 保障软件的质量
         *          ⾃动化测试缺点
         *          • 对测试⼈员技术要求较⾼
         *          • 不能发散性测试
         *          人工测试优点
         *          对测试⼈员技术要求没有⾃动化技术要求⾼
         *          • 可以进⾏发散性测试
         *          ⼿⼯测试缺点
         *          • 效率低
         *          • ⼈员，时间成本⽐起⾃动化测试都⽐较⾼
         */
    }
    public static void main5(String[] args) {
        /**
         * 5.按照测试阶段分类
         *      1.单元测试：最小单元，人为规定
         *      2.集成测试：是检查软件单位之间的接⼝是否正确（单元测试之后）
         *      3.系统测试：对通过集成测试的系统进⾏整体测试，验证系统功能性和⾮功能性需求的实现
         *          1.冒烟测试：冒烟测试设计⽤于确认代码中的更改会按预期运⾏，且不会破坏整个版本的稳定性。（检查流程是否能走通）
         *          2.回归测试：回归测试是指修改了旧代码后，重新进⾏测试以确认修改没有引⼊新的错误或导致其他代码产⽣错误。（即整体测试）
         *      4.验收测试：
         *          针对⽤⼾需求，对通过系统测试的软件进⾏交付性测试，以确定系统是否满⾜验收标准，
         *          由⽤⼾或其他授权机构决定是否接受系统。（用户/需求方决定）
         *
         */
    }
    public static void main4(String[] args) {
        /**
         * 4.按照测试方法
         *      1.白盒测试/结构测试/逻辑测试：分析程序内部结构，针对程序逻辑结构测试
         *          1.静态测试
         *          2.动态测试：
         *              语句覆盖：每个语句⾄少执⾏⼀次（即语句必须全部执行）
         *              判定覆盖：例子中既要判定有真的情况，也要判定有假的情况（指if判断的整个语句）
         *              条件覆盖：判断语句里面的条件要覆盖到有为真有为假（一般条件指全为真全为假）（指if判断里面的判断条件）
         *              判定条件覆盖：满足例子真假都有涉及 + 有为真有为假（一般条件指全为真全为假）
         *              条件组合覆盖：不同条件真假情况相同，组成用例（不能真假情况不同组合）
         *              路径覆盖：设计路径判断条件为p,通过设定p的真假设计路径即可（路径判断真假情况必须全部覆盖到）
         *          3.总结
         *              ⽩盒测试主要应⽤于单元测试阶段
         *              先执⾏静态设计⽤例的⽅法，再执⾏动态设计测试⽤例的⽅法
         *              设计⽤例⼀般使⽤路径测试，重点模块追加使⽤逻辑覆盖⽅法
         *      2.黑盒测试：不观察内部，只观察输入和输出
         *          ⿊盒测试⽤到的测试⽅法有，等价类，边界值，因果图，场景法，错误猜测法等
         *      3.灰盒测试
         *          是介于⽩盒测试与⿊盒测试之间的⼀种测试，灰盒测试多⽤于集成测试阶段（开发人员测试一般）
         *      常⻅⾯试题：你知道的测试⽅法有哪些？哪种⽤的⽐较多？
         *          常⻅的测试⽅法有⿊盒测试，⽩盒测试和灰盒测试。开发⼈员主要⽤⽩盒测试和灰盒测试，测试⼈
         *          员主要⽤⽩盒测试和⿊盒测试。对于测试⼈员来说，相较于⽩盒测试，⿊盒测试⽤的更多⼀些
         */
    }
    public static void main3(String[] args) {
        /**
         * 3.按照执行方式分类
         *      1.静态测试：不实际运行的测试软件
         *      2.动态测试：实际运⾏被测程序，输⼊相应的测试数据，检查实际输出结果和预期结果是否相符（输入数据检查结果）
         *      区别：是否运行程序
         */
    }
    public static void main2(String[] args) {
        /**
         *  2.按照测试目标分类
         *      功能测试（根据需求文档）（常用黑盒设计测试用例（不关注代码））
         *      界面测试（根据设计图）
         *      性能测试（性能指标）
         *      可靠性测试（正常运⾏时间/（正常运⾏时间+⾮正常运⾏时间）*100%，企业一般要求是以9为单位，几个9（99.99%（4个9）））
         *      易用性测试（用户体验）
         *      安全测试（信息安全）
         */
    }
    public static void main1(String[] args) {
        /**
         * 1.为什么要测试分类
         *      使开发者在软件开发过程中的不同层次、
         *      不同阶段对测试⼯作进⾏更好的执⾏和管理测试的分类⽅法
         */
    }
}
